/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package toolbox;

import business.Product;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe statique chargée de mapper la classe obtenue par le web service client
 * avec la classe Product du package business
 * @author Thomas
 * @version 1.0
 * @see business.Product
 */
public class ProductMgr {

    private static final proxy.Service1 service = new proxy.Service1();
    private static final proxy.IService1 port = service.getBasicHttpBindingIService1();

    /**
     * Interroge le web service et renvoie la liste des produits appartenant à
     * la catégorie dont l'ID est passé en paramètre
     * @param categoryID ID de la catégorie de produit
     * @return Liste des produits appartenant à la catégorie
     */
    public static List<Product> getList(int categoryID) {

        List<Product> products = new ArrayList<Product>();
        for (proxy.Product proxyProduct : port.getProductList(categoryID).getProduct()) {
            Product product = new Product(
                    proxyProduct.getProductID(),
                    proxyProduct.getName().getValue(),
                    proxyProduct.getPrice(),
                    proxyProduct.getStock(),
                    proxyProduct.getDescription().getValue(),
                    proxyProduct.getCategoryID()
                );
            products.add(product);
        }
        return products;
    }

    /**
     * Interroge le web service et renvoie la liste des produits en promotion
     * @return Liste des produits en promotion (toutes catégories confondues)
     */
    public static List<Product> getPromo() {

        List<Product> products = new ArrayList<Product>();
        for (proxy.Product proxyProduct : port.getPromoList().getProduct()) {
            Product product = new Product(
                    proxyProduct.getProductID(),
                    proxyProduct.getName().getValue(),
                    proxyProduct.getPrice(),
                    proxyProduct.getStock(),
                    proxyProduct.getDescription().getValue(),
                    proxyProduct.getCategoryID()
                );
            products.add(product);
        }
        return products;
    }

    /**
     * Interroge le web service et renvoie le produit dont l'ID correspond
     * à l'entier passé en paramètre
     * @param productID ID du produit à renvoyer
     * @return business.Product
     */
    public static Product getProduct(int productID) {

        proxy.Product proxyProduct = port.getProduct(productID);
        return new Product(
                proxyProduct.getProductID(),
                proxyProduct.getName().getValue(),
                proxyProduct.getPrice(),
                proxyProduct.getStock(),
                proxyProduct.getDescription().getValue(),
                proxyProduct.getCategoryID()
            );
    }

}